package jugadores;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

import equipos.Nombrable;

public class Jugador implements Nombrable {
    /* VARIABLES DE INSTANCIA */
    private String nombre;

    // public Map<Posicion, Integer> getPosicionValor() {
    // return this.posicionValor;
    // }

    // public void setPosicionValor(final Map<Posicion, Integer> posicionValor) {
    // this.posicionValor = posicionValor;
    // }

    private int id;

    // private Map<Posicion, Integer> posicionValor;
    private Set<Habilidad> habilidades;

    public void setHabilidades(final Set<Habilidad> habilidades) {
        this.habilidades = habilidades;
    }

    public Set<Habilidad> getHabilidades() {
        return this.habilidades;
    }

    /* CONSTRUCTOR */
    public Jugador() {

    }

    public Jugador(final String nombre) {
        this.nombre = nombre;
        // this.posicionValor = new HashMap<Posicion, Integer>();

        this.habilidades = new HashSet<Habilidad>();
        this.inicializarValores();
    }

    /* METODOS */
    private void inicializarValores() {
        Random random = new Random();
        this.agregarHabilidad(Posicion.ARQUERO, random.nextInt(9) + 1);
        this.agregarHabilidad(Posicion.LATERAL, random.nextInt(9) + 1);
        this.agregarHabilidad(Posicion.CENTRAL, random.nextInt(9) + 1);
        this.agregarHabilidad(Posicion.VOLANTEDEFENSIVO, random.nextInt(9) + 1);
        this.agregarHabilidad(Posicion.VOLANTEOFENSIVO, random.nextInt(9) + 1);
        this.agregarHabilidad(Posicion.ENGANCHE, random.nextInt(9) + 1);
        this.agregarHabilidad(Posicion.MEDIAPUNTA, random.nextInt(9) + 1);
        this.agregarHabilidad(Posicion.DELANTERO, random.nextInt(9) + 1);

    }

    // public void agregarPosicionValor(final Posicion p, final Integer i) {
    // this.posicionValor.put(p, i);
    // }

    public void agregarHabilidad(final Posicion p, final int valor) {
        this.habilidades.add(new HabilidadImpl(p, valor));
    }

    /* GETTERS & SETTERS */
    public int getValor(final Posicion posicion) {
        // return this.posicionValor.get(posicion);
        for (Habilidad hab : this.habilidades) {
            if (hab.getPosicion().equals(posicion)) {

                return hab.getValor(posicion);

            }
        }

        return 0;
    }

    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(final String nombre) {
        this.nombre = nombre;
    }

    public void setId(final int id) {
        this.id = id;
    }

    public int getId() {
        return this.id;
    }

}
